package com.adinnet.core.weiMsg;

import com.adinnet.common.utils.PropertiesConfig;
import com.alibaba.fastjson.JSONObject;

import org.slf4j.Logger;
import org.slf4j.LoggerFactory;

/**
 * Created by Administrator on 2018/4/4 0004.
 */
public class WX_TemplateMsgUtil {
    private static Logger log = LoggerFactory.getLogger(WX_TemplateMsgUtil.class);


      /**
     * 发送微信消息(模板消息) 小程序   
     * 官方API https://developers.weixin.qq.com/miniprogram/dev/api-backend/open-api/subscribe-message/subscribeMessage.send.html
     * 用户授权订阅API(前提条件) https://developers.weixin.qq.com/miniprogram/dev/api/open-api/subscribe-message/wx.requestSubscribeMessage.html
     * @param touser 接收者（用户）的 openid
     * @param template_id 	所需下发的订阅模板id
     * @param data 模板内容，格式形如 { "key1": { "value": any }, "key2": { "value": any } }返回值
     * @param page 非必填. 小程序页面。点击模板卡片后的跳转页面，仅限本小程序内的页面。支持带参数,（示例index?foo=bar）。该字段不填则模板无跳转。
     * @return
     */
    public static String sendWechatMsgToUser(String touser, String template_id,JSONObject data,String page) {
        String tmpurl = PropertiesConfig.weiXinSendMsgUrl+"?access_token="+ WX_TokenUtil.getWXToken().getAccess_token();
        for (String k : data.keySet()) {
            JSONObject  tempData= new JSONObject();
            tempData.put("value",data.get(k));
            data.put(k,tempData);
        }
        JSONObject json = new JSONObject();
        json.put("touser", touser);
        //json.put("template_id", PropertiesConfig.weiXinTemplateId);//模板ID
        json.put("template_id", template_id);//模板ID
        json.put("data", data);//推送数据
        json.put("page", page);//TODO:待开发
        try{
            log.info("发送模板请求==》：" + json.toString());
            JSONObject result = WX_HttpsUtil.httpsRequest(tmpurl, "POST", json.toString());
            JSONObject resultJson = new JSONObject(result);
            log.info("发送微信消息返回code：" + resultJson.get("errcode"));
            String errmsg = (String) resultJson.get("errmsg");
            log.info("发送微信消息返回msg：" + errmsg);
            if(!"ok".equals(errmsg)){  //如果为errmsg为ok，则代表发送成功。
                return "error";
            }
        }catch(Exception e){
            e.printStackTrace();
            return "error";
        }
        return "success";
    }
}
